package cl.gob.minvu.catastromobile;

import cl.gob.minvu.catastromobile.util.GenericUtil;
import android.content.Intent;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

public class ObservacionActivity extends AbstractActivity {
	
	private EditText observacionesField;
	private String observaciones;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_observacion);
		
		this.observacionesField = (EditText) super.findViewById(R.id.editTextObs);
		super.session = super.getSharedPreferences(GenericUtil.SESSION,
				MODE_PRIVATE);
		this.onLoadSession();
	}
	
	/**
	 * Método que valida si existe un objeto en sesión desplegándolo en el
	 * formulario.
	 */
	private void onLoadSession() {
		String observacionStr = super.session.getString(GenericUtil.OBSERVACIONES, null);

		if (observacionStr != null) {
			this.observaciones = observacionStr;
			this.loadTextFrm();
		}
	}
	
	/**
	 * Método que carga el objeto (si no es nulo) en el formulario.
	 */
	private void loadTextFrm() {
		if (this.observaciones != null) {
			this.observacionesField.setText(this.observaciones);
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.observacion, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();
		
		switch (id) {
		case R.id.obs_frm_descartar:
			this.reset();
			return true;

		case R.id.obs_frm_atras:
			this.goForm();
			return true;

		default:
			return super.onOptionsItemSelected(item);
		}
	}
	
	/**
	 * 
	 */
	private void goForm() {
		super.startActivity(new Intent(ObservacionActivity.this,
				FormActivity.class));
		finish();
	}
	
	/**
	 * 
	 */
	private void loadObject() {
		this.observaciones = super.getStringEditText(this.observacionesField);
	}
	
	/**
	 * @param button
	 */
	public void onClickSave(View button) {
		this.loadObject();
		
		Editor edit = super.session.edit();
		edit.putString(GenericUtil.OBSERVACIONES, this.observaciones);
		edit.commit();
		
		this.goForm();
	}

	@Override
	public void reset() {
		this.observaciones = null;
		Editor edit = super.session.edit();
		edit.remove(GenericUtil.OBSERVACIONES);
		edit.commit();
		this.observacionesField.setText("");
	}

	@Override
	public boolean validateFrm() {
		return false;
	}
}
